/*    
    OpenMheg - A free MHEG-5 library
    Copyright (C) 2008 Dharmesh Malam

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using Core.Model.Data.Type;
using Parser;

namespace XMHEGDecoder.Builders
{
    public class ContentRefBuilder
    {
        public static ContentRef BuildContentRef ( XmlElement node )
        {
            ContentRef ret = new ContentRef();

            XmlElement reference = node ["ref-content"];
            XmlElement size = node ["content-size"];
            XmlElement cache = node ["content-cache-priority"];

            if ( reference != null )
                ret.Value = DecodeUtils.DecodeBase64( reference.InnerText );

            if ( size != null )
                ret.ContentSize = DecodeUtils.ParseInt( size.InnerText );

            if ( cache != null )
                ret.ContentCachePriority = DecodeUtils.ParseInt( cache.InnerText );

            return ret;
        }

        public static Object BuildContentBody ( XmlElement node )
        {
            Object ret = null;

            XmlElement inc = node ["included-content"];
            XmlElement reference = node ["referenced-content"];

            if ( inc != null )
                ret = DecodeUtils.ParseStringFromNode(inc);
            else if ( reference != null )
                ret = BuildContentRef( reference );

            return ret;
        }
    }
}
